package com.deyuanyun.pic.settings.service.prvlg;

import com.deyuanyun.pic.settings.controller.dto.prvlg.UserExportVO;
import com.deyuanyun.pic.settings.controller.dto.prvlg.UserVO;
import com.deyuanyun.pic.settings.domain.org.OrgInfo;
import com.deyuanyun.pic.settings.domain.prvlg.CustomUser;
import com.deyuanyun.pic.settings.domain.prvlg.User;
import com.deyuanyun.pic.settings.domain.prvlg.UserExpand;
import com.deyuanyun.pic.settings.domain.prvlg.UserImpVO;

import java.util.List;
import java.util.Map;

public interface UserService {
	
	List<UserVO> findList(Map<String, Object> map);

    List<CustomUser> getUser(String username);
    /**
     * 查询所有的公司
     * @return
     */
	List<OrgInfo> selectAllCompany();
	/**
	 * 查询公司的部门
	 * @param companyId
	 * @return
	 */
	List<OrgInfo> selectDepartmentByCompanyId(String companyId);
	/**
	 * 查询部门的职位
	 * @param departmentId
	 * @return
	 */
	List<OrgInfo> selectPositionByDepartmentId(String departmentId);
	/**
	 * 保存用户
	 * @param username
	 * @param moblie
	 * @param email
	 * @param realName
	 * @param sex
	 * @param code
	 * @param companyId
	 * @param departmentId
	 * @param positionId
	 * @param state
	 * @param remark 
	 * @param userId 
	 * @return
	 */
	int save(String username, String moblie, String email, String realName, String sex, String code, String companyId,
			 String departmentId, String positionId, String state, String remark, String userId);
	/**
	 * 获取用户列表数据
	 * @param map 
	 * @return
	 */
	List<UserVO> getUserManagerIndex(Map<String, Object> map);
	/**
	 * 改变用户状态
	 * @param userId
	 * @param state
	 * @return
	 */
	int changeState(String userId, String state);
	/**
	 * 加载用户和用户组的授权信息
	 * @param id
	 * @return 
	 */
	Map<String, Object> userAuthorize(String id);
	/**
	 * 保存用户对用户组的授权信息
	 * @param id 
	 * @param da
	 * @return 
	 */
	int saveAuthorize(String id, String[] data);
	/**
	 * 删除用户
	 * @param idStr
	 * @return 
	 */
	int deleteData(String idStr);
	/**
	 * 启用或禁用用户
	 * @param idStr
	 * @param opt
	 * @return 
	 */
	int dataOnOrOff(String idStr, String opt);
	/**
	 * 查询用户
	 * @param username
	 * @param company
	 * @param department
	 * @param isAuthorize 
	 * @return 
	 */
	List<UserVO> searchUser(String username, String company, String department, String isAuthorize);

	UserVO queryUserExpById(String userId) throws Exception;

	void updateSelfUserInfo(User user, UserExpand userExpand);

	UserExpand getUserExpand(String userId);

	/**
	 * 导出用户
	 * @param username
	 * @param company
	 * @param department
	 * @return 
	 */
	//List<List<String[]>> exportData(UserVO uv);
	List<String[]> exportData(UserVO uv);
	/**
	 * 重置密码
	 * @param idStr
	 * @return
	 */
	int resetPwd(String idStr);
	/**
	 * 独立清管导出用户
	 * @param uv
	 * @return
	 */
	List<UserExportVO> exportUser(UserVO uv);
	/**
	 * 独立清管导入用户
	 * @param finalInfo
	 */
	void insertImpUser(List<UserImpVO> finalInfo);

}
